//环和杆
/*总计有 n 个环，环的颜色可以是红、绿、蓝中的一种。这些环分别穿在 10 根编号为 0 到 9 的杆上。

给你一个长度为 2n 的字符串 rings ，表示这 n 个环在杆上的分布。rings 中每两个字符形成一个 颜色位置对 ，用于描述每个环：

第 i 对中的 第一个 字符表示第 i 个环的 颜色（'R'、'G'、'B'）。
第 i 对中的 第二个 字符表示第 i 个环的 位置，也就是位于哪根杆上（'0' 到 '9'）。
例如，"R3G2B1" 表示：共有 n == 3 个环，红色的环在编号为 3 的杆上，绿色的环在编号为 2 的杆上，蓝色的环在编号为 1 的杆上。

找出所有集齐 全部三种颜色 环的杆，并返回这种杆的数量。*/
class Solution {
public:
    int countPoints(string rings) {
        int count = 0;
        bool _hash[10] = {0};
        vector<unordered_set<char>> hash(10);
        for (int i = 1; i < rings.size(); i += 2) {
            hash[rings[i] - '0'].insert(rings[i - 1]);
            if (hash[rings[i] - '0'].size() == 3 &&
                _hash[rings[i] - '0'] == false) {
                count++;
                _hash[rings[i] - '0'] = true;
            }
        }
        return count;
    }
};


//找出可整除性得分最大的整数
/*给你两个整数数组 nums 和 divisors 。

divisors[i] 的 可整除性得分 等于满足 nums[j] 能被 divisors[i] 整除的下标 j 的数量。

返回 可整除性得分 最大的整数 divisors[i] 。如果有多个整数具有最大得分，则返回数值最小的一个。*/
class Solution {
public:
    int maxDivScore(vector<int>& nums, vector<int>& divisors) {
        int Max = 0;
        int ret = INT_MAX;
        for (int i = 0; i < divisors.size(); i++) {
            int count = 0;
            for (int j = 0; j < nums.size(); j++) {
                if (nums[j] % divisors[i] == 0)
                    count++;
            }
            // Max = max(Max, count);
            if (Max == count) {
                ret = min(ret, divisors[i]);
            } else if (Max < count) {
                Max = count;
                ret = divisors[i];
            }
        }
        return ret;
    }
};